/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package logica;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 *
 * @author raulnavarrogomez
 */
public class Evento {
    private int id;
    private String nombre;
    private String fecha_inicio;
    private Date fecha_fin;
    private Date hora_inicio;
    private Date hora_fin;
    private String categoria_id;
    private int cliente_id;
    private String descripcion;
    private int cantParticipantes;
    private int montomax;
    Connection conexion;
    Categoria categoria = new Categoria();
    Participante participantes[];
    public DefaultTableModel modeloTabla;
    protected final Log logger = LogFactory.getLog(getClass());

    public DefaultTableModel llenarTablaTodosEventos(String cat) throws SQLException{
            modeloTabla = new DefaultTableModel();
            ConexionBD c = new ConexionBD();
            conexion = c.conectarBD();
            String query = null;
            if ((cat.equals("")) || (cat.equals("Todos"))){
                query = "SELECT * FROM EVENTOS";
            }else{
                categoria.getIdCategoria(cat);
                query = "SELECT * FROM EVENTOS CATEGORIA_ID="+categoria.getId();
            }
            PreparedStatement ps = conexion.prepareStatement(query);
            ResultSet rs = ps.executeQuery();
            String array[] = new String[5];
            array[1]="Nombre";
            array[2]="Fecha";
            array[3]="Hora Inicio";
            array[4]="Categoria";
            array[0]="Id";
            modeloTabla.setColumnIdentifiers(array);
            while (rs.next()) {
                array[0]= Integer.toString(rs.getInt(1));
                array[1]= rs.getString(2);
                array[2]= rs.getString(3);
                array[3]= rs.getString(5);
                categoria.getNombreCategoria(rs.getInt(7));
                array[4]= categoria.getNombre();
                modeloTabla.addRow(array);
            }
            conexion.close();
            return modeloTabla;
    }
      
    public void getDescripcionEvento(int id) throws SQLException{
            ConexionBD c = new ConexionBD();
            conexion = c.conectarBD();
            String query = "SELECT descripcion FROM eventos WHERE id="+id;
            PreparedStatement ps = conexion.prepareStatement(query);
            ResultSet rs = ps.executeQuery();
            setDescripcion(rs.getString(1));
            conexion.close();
            this.getDescripcion();
    }

    public int getCantidadParticipantes(int idEv) throws SQLException{
        ConexionBD c = new ConexionBD();
        conexion = c.conectarBD();
        String query = "SELECT COUNT(ep.id) FROM eventos e, participantes p, evento_participantes ep WHERE e.id = ep.evento_id AND p.id = ep.participante_id AND e.id="+idEv;
        PreparedStatement ps = conexion.prepareStatement(query);
        ResultSet rs = ps.executeQuery();
        this.setCantParticipantes(rs.getInt(1));
        conexion.close();
        return this.getCantParticipantes();
    }

    public DefaultTableModel getParticipantes(int idEv) throws SQLException{
        modeloTabla = new DefaultTableModel();
        ConexionBD c = new ConexionBD();
        conexion = c.conectarBD();
        String query = "SELECT p.id, p.nombre, ep.relacionpago FROM eventos e, participantes p, evento_participantes ep WHERE e.id = ep.evento_id AND p.id = ep.participante_id AND e.id ="+idEv;
        PreparedStatement ps = conexion.prepareStatement(query);
        ResultSet rs = ps.executeQuery();
        int posicion = 1;
        String array[] = new String[4];
        array[0]="Id";
        array[1]="Posicion";
        array[2]="Participante";
        array[3]="Relacion de Pago";
        modeloTabla.setColumnIdentifiers(array);
        while (rs.next()){
            array[0]=String.valueOf(rs.getInt(1));
            array[1]=String.valueOf(posicion);
            array[2]=rs.getString(2);
            array[3]=rs.getString(3);
            posicion++;
            modeloTabla.addRow(array);
        }
        conexion.close();
        return modeloTabla;
    }

    public String getParticipanteFactura(int idEv, int idPar) throws SQLException{
        ConexionBD c = new ConexionBD();
        conexion = c.conectarBD();
        String query = "SELECT p.nombre, ep.relacionpago FROM eventos e, participantes p, evento_participantes ep WHERE e.id = ep.evento_id AND p.id = ep.participante_id AND e.id ="+idEv+" AND p.id="+idPar;
        PreparedStatement ps = conexion.prepareStatement(query);
        ResultSet rs = ps.executeQuery();
        String factura = "Participante apostado: "+rs.getString(1)+" \n Relacion de Pago: "+rs.getString(2);
        conexion.close();
        return factura;
    }

    public Participante[] getParticipantesVS(int idEv) throws SQLException{

        ConexionBD c = new ConexionBD();
        conexion = c.conectarBD();
        String query = "SELECT COUNT(p.id) FROM eventos e, participantes p, evento_participantes ep WHERE e.id = ep.evento_id AND p.id = ep.participante_id AND e.id ="+idEv;
        PreparedStatement ps = conexion.prepareStatement(query);
        ResultSet rs = ps.executeQuery();
        
        Participante array[] = new Participante[rs.getInt(1)];

        query = "SELECT p.id, p.nombre, ep.relacionpago FROM eventos e, participantes p, evento_participantes ep WHERE e.id = ep.evento_id AND p.id = ep.participante_id AND e.id ="+idEv;
        ps = conexion.prepareStatement(query);
        rs = ps.executeQuery();
        int i = 0;
        while (rs.next()){
            array[i] = new Participante();
            array[i].setId(rs.getInt(1));
            array[i].setNombre(rs.getString(2));
            array[i].setPago(rs.getString(3));
            i++;
        }
        conexion.close();
        return array;
    }

    public int getMontoApuesta(int idEv, int idPart) throws SQLException{
        ConexionBD c = new ConexionBD();
        conexion = c.conectarBD();
        String query = "SELECT apuesta_maxima FROM evento_participantes WHERE participante_id="+idPart+" AND evento_id="+idEv;
        PreparedStatement ps = conexion.prepareStatement(query);
        ResultSet rs = ps.executeQuery();
        this.setMontomax(rs.getInt(1));
        conexion.close();
        return getMontomax();
    }

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * @return the fecha_inicio
     */
    public String getFecha_inicio() {
        return fecha_inicio;
    }

    /**
     * @param fecha_inicio the fecha_inicio to set
     */
    public void setFecha_inicio(String fecha_inicio) {
        this.fecha_inicio = fecha_inicio;
    }

    /**
     * @return the fecha_fin
     */
    public Date getFecha_fin() {
        return fecha_fin;
    }

    /**
     * @param fecha_fin the fecha_fin to set
     */
    public void setFecha_fin(Date fecha_fin) {
        this.fecha_fin = fecha_fin;
    }

    /**
     * @return the hora_inicio
     */
    public Date getHora_inicio() {
        return hora_inicio;
    }

    /**
     * @param hora_inicio the hora_inicio to set
     */
    public void setHora_inicio(Date hora_inicio) {
        this.hora_inicio = hora_inicio;
    }

    /**
     * @return the hora_fin
     */
    public Date getHora_fin() {
        return hora_fin;
    }

    /**
     * @param hora_fin the hora_fin to set
     */
    public void setHora_fin(Date hora_fin) {
        this.hora_fin = hora_fin;
    }

    /**
     * @return the categoria_id
     */
    public String getCategoria_id() {
        return categoria_id;
    }

    /**
     * @param categoria_id the categoria_id to set
     */
    public void setCategoria_id(String categoria_id) {
        this.categoria_id=categoria_id;
    }

    /**
     * @return the cliente_id
     */
    public int getCliente_id() {
        return cliente_id;
    }

    /**
     * @param cliente_id the cliente_id to set
     */
    public void setCliente_id(int cliente_id) {
        this.cliente_id = cliente_id;
    }

    /**
     * @return the descripcion
     */
    public String getDescripcion() {
        return descripcion;
    }

    /**
     * @param descripcion the descripcion to set
     */
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    /**
     * @return the montomax
     */
    public int getMontomax() {
        return montomax;
    }

    /**
     * @param montomax the montomax to set
     */
    public void setMontomax(int montomax) {
        this.montomax = montomax;
    }

    /**
     * @return the cantParticipantes
     */
    public int getCantParticipantes() {
        return cantParticipantes;
    }

    /**
     * @param cantParticipantes the cantParticipantes to set
     */
    public void setCantParticipantes(int cantParticipantes) {
        this.cantParticipantes = cantParticipantes;
    }

    /**
     * @param categoria_id the categoria_id to set
     */

}
